﻿using System.Collections.Generic;
using KLadderProposal.Interfaces.BasicStructures;

namespace KLadderProposal.Interfaces
{
    public interface IGraph
    {
        GraphNode AddNode(string label);
        void AddUndirectedEdge(string fromNodeLabel, string toNodeLabel);
        bool Contains(string label);
        int Count { get; }
        GraphNode FindByValue(string label);
        IEnumerable<GraphNode> Nodes { get; }
        IEnumerable<GraphNode> SortedNodes { get; }
        bool Remove(string label);
        void LoadFrom(string filePath);
        void SaveTo(string filePath);
        void SortGraphByNeighbors();
    }
}
